package ch4;

import java.util.Scanner;

public class HWExer1 {
    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);
        /*练习1：输出1，2。。。直到1000，每次加1.:*/
        for(int i = 1;i <= 1000;i++){
            int num = i + 1;
            System.out.println(i+ "自加1的结果为：" + num);
        }
        /*练习2：输出1，4，9，。。。一直到100的平方*/
        for(int i = 1;i <= 100;i++){
            int pinFang = i*i;
            //i *= i;
            System.out.println(i + "的平方为：" + pinFang);
        }
        /*练习3：从1000开始，输出数字，每次减一，999，998，直到100.*/
        for(int i = 1000;i > 100;i--){
            int num1 = i - 1;
            //i -= i;
            System.out.println(i + "自减1的结果为：" + num1);
        }
        /*练习4：求1-1000之间的数的和*/
        int sum = 0;
        for(int i = 1;i <= 1000;i++ ){
            sum += i;
        }
        System.out.println("1-1000之间的数的和为：" + sum);
        /*练习5：求1-20之间的数的乘积(double)*/
        double multiply = 1.0;
        for(int i = 1;i <= 20;i++){
            multiply *= i;
        }
        System.out.println("1-20之间的数的乘积为：" + multiply);
       /* 练习6：输出1-1000内能被7整除的数*/
        int num2 = 0;
        for(int i = 1;i <= 1000;i++){
            if(i % 7 ==0){
                num2++;
                System.out.println("1-1000内能被7整除的数为：" + i);
            }
        }
        System.out.println("1-1000内能被7整除的数一共有：" + num2 +"个" );
        /*练习7：输入10个数，求他们所有数的和*/
        int sum2 = 0;
        for(int i = 1;i <= 10;i++) {
            Scanner scan = new Scanner(System.in);
            System.out.println("第" + i +"个数为：");
            int num3 = scan.nextInt();
            sum2 += num3;
        }
        System.out.println("输入的10个数他们的和为:" + sum2 );

        /*练习8：输入10个数，求他们当中最大的数*/
        System.out.println("请输入第一个数：");
        int numm1 = input.nextInt();
        int max = numm1;
        for(int i = 1;i <= 9;i++){
            System.out.println("第" + (i + 1) +"个数为：");
            int numm2 = input.nextInt();
          /* max =(numm1 >= numm2)? numm1 : numm2;
            System.out.println((i+1)+"个数中他们当中最大的数为：");*/
            if(max >= numm2 ){
                max = max;
                continue;
            }else {
                max = numm2;
                continue;
            }
        }
        System.out.println("他们当中最大的数为：" + max);


        /*练习9：找到所有的水仙花数:
        水仙花数是这样的一个三位数：
        这个数等于每一位上的数的立方和,比如153*/

        for(int i = 100;i <= 999;i++){//153
           int summ = (i /100)*(i/100)*(i/100)+(i/10 %10)*(i/10 %10)*(i/10 %10)
                    +(i % 10)* (i % 10)* (i % 10);
            if(summ == i){
                System.out.println(i);
            }
        }

        /*练习10：(*)：用户输入任意一个正整数，求其所有位上的数字和并输出
        比如123，和为6,10000和为1。1234  //98//123456(1~10)/(10~100)(100~1000)(1000~10000)
        从1开始，输出能被9整除的数，每20个一行，最多到10000结束*/
        Scanner scan = new Scanner(System.in);
        System.out.println("请输入一个整数：");
        int xNumber = scan.nextInt();
        int randomSumm = 0;
        boolean isTrue = true;
        while(isTrue){
            int a = xNumber % 10;
            System.out.println(a);
            randomSumm += a;
            xNumber /= 10;
            if(xNumber <= 10){
                a = xNumber;
                randomSumm += a;
                System.out.println(a);
                System.out.println("其所有位上的数字和为：" +randomSumm);
                isTrue = false;
            }
        }

        //从1开始，输出能被9整除的数，每20个一行，最多到10000结束
        int account = 0;
        for(int i = 1;i <= 10000;i++){
            if(i % 9 ==0){
                System.out.print(i + " ");
                account++;
            }
            if(account % 20 == 0 ){
                System.out.println("");
            }
        }
        System.out.println("");
        System.out.println("**************");

        /*练习11：找到所有的四维水仙花数:
        水仙花数是这样的一个四位数：
        这个数等于每一位上的数的四次方和*/
        for(int i = 1000;i <= 9999;i++){//153//9876
            int summ = ((i/1000)*(i/1000)*(i/1000)*(i/1000))+(i /100 %10)*(i/100%10)*(i/100%10)*(i/100%10)+
                    (i/10 %10)*(i/10 %10)*(i/10 %10)*(i/10 %10)+
                    (i % 10)* (i % 10)* (i % 10)*(i % 10);
            if(summ == i){
                System.out.println(i);
            }
        }

        /*练习12：求出1-1000以内十位是3，并且能被7和11整除的数字的和*/
        int takeSum = 0;
        int takeSum1 = 0;
        int takeSum2 = 0;
        for(int i = 1;i <= 1000;i++){
            if(i > 100){
                if(((i / 10)%10== 3)&&(i % 7 == 0)&&(i%11==0)){
                    System.out.println(i);
                    takeSum2 += i;
                }
            }else if(i > 10){
                if((i % 10 == 3)&&(i % 7 == 0)&&(i%11==0)){
                    System.out.println(i);
                    takeSum1 += i;
                }
            }
        }
        takeSum = takeSum1 + takeSum2;
        System.out.println("符合要求的和为：" + takeSum);
        /*练习13：求一个正整数 倒转后加上1024的结果.（百度）
        比如 12345倒转后是54321,加上1024，结果是55345.*/
        int zDSum = 0;
        System.out.println("请输入一个整数：");
        for(int zdNumber=input.nextInt();zdNumber > 0;zdNumber /= 10){
                zDSum = zDSum*10+(zdNumber%10);
        }
        System.out.println("结果为：" +(zDSum + 1024));


       /* 练习14：用户输入一个数，验证其是否是质数
       （只能被和它本身整除的是质数，比如5，但是1不是质数）*/
        System.out.println("请输入一个数：");
        int  zNumber = input.nextInt();
        int kaiFang = (int) (Math.sqrt(zNumber));
        boolean isFlage = true;
        for(int i = 2;i <= kaiFang;i++){
            if(zNumber % i == 0){
                System.out.println(zNumber +" 不是质数");
                isFlage =false;
                break;
            }
        }
        if(isFlage){
            System.out.println(zNumber+" 是质数");
        }

        /*练习15：已知：xyz为正整数，满足：
        xy+z=94
        x+yz=95
        求x,y,z的整数解。*/
        for (int x =0;x <=95;x++){
            for(int y=0;y<=95;y++){
                for (int z =0;z<=94;z++){
                    if((x*y+z==94)&&(x+y*z==95)&&((z-x)*(y - 1)==1)){
                        System.out.println("x为：" + x +"，y为：" + y +"，z为：" +z);
                        break;
                    }
                }
            }
        }
    }
}
